From de88c46c01b4ff2c6f6f0a28472b850daded451d Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sun, 14 Aug 2005 18:25:11 +0000 Subject: [PATCH] add image builder to whiterussian, really fix base-files, dependency fixes/cleanups in the kernel compile SVN-Revision: 1671 --- openwrt/package/Config.in | 9 +++++ openwrt/package/base-files/Makefile | 4 +-- openwrt/target/Makefile | 3 +- openwrt/target/linux/Makefile | 40 ++++++++++++++++++++-- openwrt/target/linux/image/Makefile | 14 ++++---- openwrt/target/linux/image/brcm/Makefile | 30 ++++++++++++---- openwrt/target/linux/image/jffs2.mk | 5 +++ openwrt/target/linux/image/squashfs.mk | 8 ++++- openwrt/target/linux/linux-2.4/Makefile | 17 ++++++--- openwrt/target/linux/linux-2.4/broadcom.mk | 2 +- openwrt/toolchain/Makefile | 22 ++++++------ 11 files changed, 118 insertions(+), 36 deletions(-) diff --git a/openwrt/package/Config.in b/openwrt/package/Config.in index 5d3391fd8b..4086c70847 100644 --- a/openwrt/package/Config.in +++ b/openwrt/package/Config.in @@ -137,6 +137,15 @@ source "package/shfs/Config.in" # kmod-shfs comment "Extra stuff" source "package/sdk/Config.in" +config BR2_PACKAGE_IMAGEBUILDER + bool "OpenWrt Image Builder" + default y if CONFIG_DEVEL + help + Build an OpenWrt Image Builder. + This package contains the necessary (precompiled) tools and all packages to generate + firmware images from package lists, without having to use the full buildroot. + Useful for building images with custom scripts or extra packages. + endmenu source "package/Sysconf.in" diff --git a/openwrt/package/base-files/Makefile b/openwrt/package/base-files/Makefile index afac929c99..af60baface 100644 --- a/openwrt/package/base-files/Makefile +++ b/openwrt/package/base-files/Makefile @@ -50,9 +50,9 @@ $(IPKG_BASE): $(IPKG_LIBC): $(SCRIPT_DIR)/make-ipkg-dir.sh $(IDIR_LIBC) ipkg/uclibc.control $(LIBC_VERSION)-$(PKG_RELEASE) $(ARCH) mkdir -p $(IDIR_LIBC)/lib - cp -fpR $(STAGING_DIR)/lib/ld-uClibc*.so $(IDIR_LIBC)/lib/ + cp $(STAGING_DIR)/lib/ld-uClibc*.so.* $(IDIR_LIBC)/lib/ for file in c crypt dl m nsl resolv rt uClibc util; do \ - cp -fpR $(STAGING_DIR)/lib/lib$$file*.so $(IDIR_LIBC)/lib/; \ + cp $(STAGING_DIR)/lib/lib$$file*.so.* $(IDIR_LIBC)/lib/; \ done -$(STRIP) $(IDIR_LIBC)/lib/* $(IPKG_BUILD) $(IDIR_LIBC) $(PACKAGE_DIR) diff --git a/openwrt/target/Makefile b/openwrt/target/Makefile index 5e8c6f28cd..e6156b48bf 100644 --- a/openwrt/target/Makefile +++ b/openwrt/target/Makefile @@ -26,5 +26,6 @@ image_clean: $(MAKE) -C $(patsubst %-rebuild,%,$@) rebuild %-install: %-compile $(MAKE) -C $(patsubst %-install,%,$@) install - +linux-imagebuilder: + $(MAKE) -C linux imagebuilder diff --git a/openwrt/target/linux/Makefile b/openwrt/target/linux/Makefile index 604c739b59..f0e3b9842e 100644 --- a/openwrt/target/linux/Makefile +++ b/openwrt/target/linux/Makefile @@ -1,5 +1,11 @@ include $(TOPDIR)/rules.mk +PKG_OS:=$(shell uname -s) +PKG_CPU:=$(shell uname -m) + +IB_NAME:=OpenWrt-ImageBuilder-$(PKG_OS)-$(PKG_CPU) +IB_DIR:=$(BUILD_DIR)/$(IB_NAME) + define kernel_template $(1)/$(2)-clean: @@ -20,22 +26,50 @@ $(1)/$(2)-install: $(1)/$(2)-image: $(1)/$(2)-install $(MAKE) -C image KERNEL="$(1)" BOARD="$(2)" install +$(1)/$(2)-install-ib: + $(MAKE) -C image KERNEL="$(1)" BOARD="$(2)" IB_DIR="$(IB_DIR)" install-ib + echo '$$$$(eval $$$$(call image_template,$(2),$(1)))' >> $(IB_DIR)/kernel.mk + + ifeq ($(BR2_LINUX_$(3)),y) clean: $(1)/$(2)-clean prepare: $(1)/$(2)-prepare compile: $(1)/$(2)-compile rebuild: $(1)/$(2)-rebuild -install: $(1)/$(2)-image +kernel-install: $(1)/$(2)-image +install-ib: $(1)/$(2)-install-ib endif -.PHONY: $(1)/$(2)-clean $(1)/$(2)-prepare $(1)/$(2)-compile $(1)/$(2)-rebuild $(1)/$(2)-install +.PHONY: $(1)/$(2)-clean $(1)/$(2)-prepare $(1)/$(2)-compile $(1)/$(2)-rebuild $(1)/$(2)-install $(1)/$(2)-image $(1)/$(2)-install-ib endef +.PHONY: clean prepare compile rebuild install imagebuilder install-ib kernel-install + +install-ib: + +$(BIN_DIR)/$(IB_NAME).tar.bz2: kernel-install + rm -rf $(IB_DIR) + mkdir -p $(IB_DIR)/packages + mkdir -p $(IB_DIR)/scripts + cp -dpR ./imagebuilder/* $(IB_DIR)/ + cp -dpR $(TOPDIR)/bin/packages/*.ipk $(IB_DIR)/packages/ + cp $(TOPDIR)/scripts/ipkg $(IB_DIR)/scripts/ + $(MAKE) install-ib + cp $(TOPDIR)/rules.mk $(IB_DIR) + cp -dpR ./image $(IB_DIR)/ + cp $(TOPDIR)/.config $(IB_DIR)/ + find $(IB_DIR) -name CVS | xargs rm -rf + (cd $(BUILD_DIR); tar c $(IB_NAME) | bzip2 -c > $(BIN_DIR)/$(IB_NAME).tar.bz2) + +ifeq ($(BR2_PACKAGE_IMAGEBUILDER),y) +install: $(BIN_DIR)/$(IB_NAME).tar.bz2 +endif + prepare: $(MAKE) -C image prepare compile: $(MAKE) -C image compile -install: +install: kernel-install rebuild: clean: diff --git a/openwrt/target/linux/image/Makefile b/openwrt/target/linux/image/Makefile index 73e67a3d1c..679a570962 100644 --- a/openwrt/target/linux/image/Makefile +++ b/openwrt/target/linux/image/Makefile @@ -1,9 +1,5 @@ include $(TOPDIR)/rules.mk -ifeq ($(BOARD),) -BOARD:=brcm -endif - KDIR:=$(BUILD_DIR)/linux-$(KERNEL)-$(BOARD) ifeq ($(BR2_TARGET_ROOTFS_JFFS2),y) @@ -15,10 +11,16 @@ include ./squashfs.mk endif prepare: -compile: -install: $(MAKE) -C $(BOARD) prepare +compile: $(MAKE) -C $(BOARD) compile +install: + +install-ib: + -$(MAKE) -C $(BOARD) IB_DIR="$(IB_DIR)" install-ib + mkdir -p $(IB_DIR)/build_$(ARCH)/linux-$(KERNEL)-$(BOARD) + cp $(BUILD_DIR)/linux-$(KERNEL)-$(BOARD)/kernel[-_]*.ipk $(IB_DIR)/build_$(ARCH)/linux-$(KERNEL)-$(BOARD)/ + rebuild: clean prepare compile install clean: diff --git a/openwrt/target/linux/image/brcm/Makefile b/openwrt/target/linux/image/brcm/Makefile index ec8f72ccac..f551b84bee 100644 --- a/openwrt/target/linux/image/brcm/Makefile +++ b/openwrt/target/linux/image/brcm/Makefile @@ -1,6 +1,6 @@ include $(TOPDIR)/rules.mk -KDIR:=$(BUILD_DIR)/linux-$(KERNEL)-brcm +KDIR:=$(BUILD_DIR)/linux-$(KERNEL)-$(BOARD) lzma-loader-clean: $(MAKE) -C lzma-loader clean @@ -11,16 +11,20 @@ lzma-loader-prepare: lzma-loader-compile: lzma-loader-prepare $(MAKE) -C lzma-loader compile +ifeq ($(IB),) $(KDIR)/vmlinux.lzma: $(KDIR)/vmlinux cat $^ | $(STAGING_DIR)/bin/lzma e -si -so -eos -lc1 -lp2 -pb2 > $@ || (rm -f $@ && false) +$(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FS).trx: $(KDIR)/vmlinux.lzma +endif + ifeq ($(FS),jffs2-8MB) TRXALIGN:=-a 0x20000 endif ifeq ($(FS),jffs2-4MB) TRXALIGN:=-a 0x10000 endif -$(BIN_DIR)/openwrt-brcm-$(KERNEL)-$(FS).trx: $(KDIR)/vmlinux.lzma +$(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FS).trx: $(STAGING_DIR)/bin/trx -o $@ $(BUILD_DIR)/loader.gz $(KDIR)/vmlinux.lzma $(TRXALIGN) $(KDIR)/root.$(FS) @@ -28,26 +32,38 @@ ifeq ($(KERNEL),2.4) FSNAME:=$(patsubst jffs2-%,jffs2,$(FS)) ifneq ($(FS),jffs2-8MB) -$(BIN_DIR)/openwrt-wrt54g-$(FSNAME).bin: $(BIN_DIR)/openwrt-brcm-$(KERNEL)-$(FS).trx +$(BIN_DIR)/openwrt-wrt54g-$(FSNAME).bin: $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FS).trx $(STAGING_DIR)/bin/addpattern -4 -p W54G -v v4.20.6 -i $< -o $@ -g install: $(BIN_DIR)/openwrt-wrt54g-$(FSNAME).bin endif ifneq ($(FS),jffs2-4MB) -$(BIN_DIR)/openwrt-wrt54gs-$(FSNAME).bin: $(BIN_DIR)/openwrt-brcm-$(KERNEL)-$(FS).trx +$(BIN_DIR)/openwrt-wrt54gs-$(FSNAME).bin: $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FS).trx $(STAGING_DIR)/bin/addpattern -4 -p W54S -v v4.70.6 -i $< -o $@ -g install: $(BIN_DIR)/openwrt-wrt54gs-$(FSNAME).bin endif -$(BIN_DIR)/openwrt-motorola-$(FS).bin: $(BIN_DIR)/openwrt-brcm-$(KERNEL)-$(FS).trx +$(BIN_DIR)/openwrt-motorola-$(FS).bin: $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FS).trx $(STAGING_DIR)/bin/motorola-bin $< $@ install: $(BIN_DIR)/openwrt-motorola-$(FS).bin endif +ifeq ($(IB),) clean: lzma-loader-clean prepare: lzma-loader-prepare compile: lzma-loader-compile -install: compile $(BIN_DIR)/openwrt-brcm-$(KERNEL)-$(FS).trx - +install: compile $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FS).trx +else +clean: +prepare: +compile: +install: $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FS).trx +endif +install-ib: + mkdir -p $(IB_DIR)/staging_dir_$(ARCH)/bin + cp -dpR $(STAGING_DIR)/bin/addpattern $(STAGING_DIR)/bin/trx $(STAGING_DIR)/bin/motorola-bin $(IB_DIR)/staging_dir_$(ARCH)/bin + mkdir -p $(IB_DIR)/build_$(ARCH)/linux-$(KERNEL)-$(BOARD) + cp -dpR $(BUILD_DIR)/loader.gz $(IB_DIR)/build_$(ARCH)/ + cp -dpR $(KDIR)/vmlinux.lzma $(IB_DIR)/build_$(ARCH)/linux-$(KERNEL)-$(BOARD)/ diff --git a/openwrt/target/linux/image/jffs2.mk b/openwrt/target/linux/image/jffs2.mk index 02c56817b3..a2c47e4dcd 100644 --- a/openwrt/target/linux/image/jffs2.mk +++ b/openwrt/target/linux/image/jffs2.mk @@ -23,8 +23,13 @@ jffs2-install: $(KDIR)/root.jffs2-4MB $(KDIR)/root.jffs2-8MB $(MAKE) -C $(BOARD) install KERNEL="$(KERNEL)" FS="jffs2-4MB" $(MAKE) -C $(BOARD) install KERNEL="$(KERNEL)" FS="jffs2-8MB" +jffs2-install-ib: + mkdir -p $(IB_DIR)/staging_dir_$(ARCH)/bin + cp $(STAGING_DIR)/bin/mkfs.jffs2 $(IB_DIR)/staging_dir_$(ARCH)/bin + prepare: jffs2-prepare compile: jffs2-compile install: jffs2-install +install-ib: jffs2-install-ib clean: jffs2-clean diff --git a/openwrt/target/linux/image/squashfs.mk b/openwrt/target/linux/image/squashfs.mk index fbf4e704ea..42ff77db64 100644 --- a/openwrt/target/linux/image/squashfs.mk +++ b/openwrt/target/linux/image/squashfs.mk @@ -10,11 +10,17 @@ squashfs-clean: $(KDIR)/root.squashfs: @mkdir -p $(KDIR)/root/jffs - $(STAGING_DIR)/bin/mksquashfs-lzma $(KDIR)/root $@ -noappend -nopad -root-owned -le + $(STAGING_DIR)/bin/mksquashfs-lzma $(KDIR)/root $@ -nopad -noappend -root-owned -le squashfs-install: $(KDIR)/root.squashfs $(MAKE) -C $(BOARD) install KERNEL="$(KERNEL)" FS="squashfs" + +squashfs-install-ib: + mkdir -p $(IB_DIR)/staging_dir_$(ARCH)/bin + cp $(STAGING_DIR)/bin/mksquashfs-lzma $(IB_DIR)/staging_dir_$(ARCH)/bin prepare: squashfs-prepare compile: squashfs-compile install: squashfs-install +install-ib: squashfs-install-ib +clean: squashfs-clean diff --git a/openwrt/target/linux/linux-2.4/Makefile b/openwrt/target/linux/linux-2.4/Makefile index 5a718a260c..687069fe07 100644 --- a/openwrt/target/linux/linux-2.4/Makefile +++ b/openwrt/target/linux/linux-2.4/Makefile @@ -203,6 +203,15 @@ $(STAGING_DIR)/include/linux/version.h: $(LINUX_DIR)/.configured tar -ch -C $(LINUX_DIR)/include -f - linux | tar -xf - -C $(STAGING_DIR)/include/ tar -ch -C $(LINUX_DIR)/include -f - asm | tar -xf - -C $(STAGING_DIR)/include/ +$(STAMP_DIR)/.linux-compile: $(LINUX_DIR)/.modules_done + @mkdir -p $(STAMP_DIR) + @$(MAKE) $(TARGETS) + ln -sf $(LINUX_BUILD_DIR)/linux-$(LINUX_VERSION) $(LINUX_DIR) + $(MAKE) -C $(TOPDIR)/target/linux/package \ + $(KPKG_MAKEOPTS) \ + compile + touch $@ + $(TARGET_MODULES_DIR): -mkdir -p $(TARGET_MODULES_DIR) @@ -217,11 +226,7 @@ $(KERNEL_IPKG): source: $(DL_DIR)/$(LINUX_SOURCE) prepare: $(LINUX_DIR)/.configured -compile: $(LINUX_DIR)/.modules_done $(TARGETS) - ln -sf $(LINUX_BUILD_DIR)/linux-$(LINUX_VERSION) $(LINUX_DIR) - $(MAKE) -C $(TOPDIR)/target/linux/package \ - $(KPKG_MAKEOPTS) \ - compile +compile: $(STAMP_DIR)/.linux-compile install: compile $(TARGET_MODULES_DIR) $(KERNEL_IPKG) rm -rf $(LINUX_BUILD_DIR)/root* @@ -237,6 +242,7 @@ install: compile $(TARGET_MODULES_DIR) $(KERNEL_IPKG) [ "$(INSTALL_TARGETS)" != "" ] && $(IPKG_KERNEL) install $(INSTALL_TARGETS) || true mostlyclean: + rm -f $(STAMP_DIR)/.linux-compile rm -f $(LINUX_BUILD_DIR)/linux-$(LINUX_VERSION)/.modules_done rm -f $(LINUX_BUILD_DIR)/linux-$(LINUX_VERSION)/.drivers-unpacked $(MAKE) -C $(LINUX_BUILD_DIR)/linux-$(LINUX_VERSION) clean @@ -250,5 +256,6 @@ rebuild: $(MAKE) compile clean: + rm -f $(STAMP_DIR)/.linux-compile rm -rf $(LINUX_BUILD_DIR) rm -f $(TARGETS) diff --git a/openwrt/target/linux/linux-2.4/broadcom.mk b/openwrt/target/linux/linux-2.4/broadcom.mk index 90007b7451..cb267db2c9 100644 --- a/openwrt/target/linux/linux-2.4/broadcom.mk +++ b/openwrt/target/linux/linux-2.4/broadcom.mk @@ -37,7 +37,7 @@ $(DL_DIR)/$(LINUX_ET_DRIVER): $(LINUX_DIR)/.depend_done: $(LINUX_DIR)/.drivers-unpacked $(LINUX_DIR)/.modules_done: $(LINUX_DIR)/.drivers-unpacked -$(LINUX_DIR)/.drivers-unpacked: $(LINUX_DIR)/.unpacked +$(LINUX_DIR)/.drivers-unpacked: $(LINUX_DIR)/.unpacked $(DL_DIR)/$(LINUX_BINARY_WL_DRIVER) $(DL_DIR)/$(LINUX_ET_DRIVER) -mkdir -p $(BUILD_DIR) zcat $(DL_DIR)/$(LINUX_BINARY_WL_DRIVER) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - zcat $(DL_DIR)/$(LINUX_ET_DRIVER) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - diff --git a/openwrt/toolchain/Makefile b/openwrt/toolchain/Makefile index c573debe49..2b1358b123 100644 --- a/openwrt/toolchain/Makefile +++ b/openwrt/toolchain/Makefile @@ -15,8 +15,10 @@ gcc-prepare: binutils-install uClibc-compile: gcc-prepare gcc-compile: uClibc-install -$(STAMP_DIR): - mkdir -p $(STAMP_DIR) +TOOLCHAIN_STAMP_DIR:=$(STAGING_DIR)/stampfiles + +$(TOOLCHAIN_STAMP_DIR): + mkdir -p $(TOOLCHAIN_STAMP_DIR) $(STAGING_DIR): @mkdir -p $(STAGING_DIR)/lib @@ -27,19 +29,19 @@ $(STAGING_DIR): $(TOOL_BUILD_DIR): @mkdir -p $(TOOL_BUILD_DIR) -%-prepare: $(STAMP_DIR) $(STAGING_DIR) $(TOOL_BUILD_DIR) - @[ -f $(STAMP_DIR)/.toolchain_$@ ] || $(MAKE) -C $(patsubst %-prepare,%,$@) prepare - @touch $(STAMP_DIR)/.toolchain_$@ +%-prepare: $(TOOLCHAIN_STAMP_DIR) $(STAGING_DIR) $(TOOL_BUILD_DIR) + @[ -f $(TOOLCHAIN_STAMP_DIR)/.toolchain_$@ ] || $(MAKE) -C $(patsubst %-prepare,%,$@) prepare + @touch $(TOOLCHAIN_STAMP_DIR)/.toolchain_$@ %-compile: %-prepare - @[ -f $(STAMP_DIR)/.toolchain_$@ ] || $(MAKE) -C $(patsubst %-compile,%,$@) compile - @touch $(STAMP_DIR)/.toolchain_$@ + @[ -f $(TOOLCHAIN_STAMP_DIR)/.toolchain_$@ ] || $(MAKE) -C $(patsubst %-compile,%,$@) compile + @touch $(TOOLCHAIN_STAMP_DIR)/.toolchain_$@ %-install: %-compile - @[ -f $(STAMP_DIR)/.toolchain_$@ ] || $(MAKE) -C $(patsubst %-install,%,$@) install - @touch $(STAMP_DIR)/.toolchain_$@ + @[ -f $(TOOLCHAIN_STAMP_DIR)/.toolchain_$@ ] || $(MAKE) -C $(patsubst %-install,%,$@) install + @touch $(TOOLCHAIN_STAMP_DIR)/.toolchain_$@ %-clean: @$(MAKE) -C $(patsubst %-clean,%,$@) clean - @rm -f $(STAMP_DIR)/.toolchain_$(patsubst %-clean,%,$@)-* + @rm -f $(TOOLCHAIN_STAMP_DIR)/.toolchain_$(patsubst %-clean,%,$@)-* -- 2.30.2